React Native অ্যাপ্লিকেশনে Local Database ব্যবহারের মাধ্যমে আপনি অ্যাপের ডেটা অফলাইনে সংরক্ষণ করতে পারেন। দুটি জনপ্রিয় স্থানীয় ডাটাবেস সিস্টেম SQLite এবং Realm। এই দুটি ডাটাবেসের প্রতিটির নিজস্ব বৈশিষ্ট্য রয়েছে এবং এগুলি ব্যবহৃত হয় বিভিন্ন ধরনের অ্যাপ্লিকেশনের ডেটা সংরক্ষণ এবং ম্যানেজমেন্টের জন্য।
নিচে SQLite এবং Realm এর মাধ্যমে React Native অ্যাপের জন্য Local Database Management ব্যবস্থাপনা নিয়ে বিস্তারিত আলোচনা করা হয়েছে।
SQLite - Local Database Management
SQLite হল একটি ছোট এবং সিম্পল SQL ডেটাবেস ইঞ্জিন যা ডিভাইসে ইনস্টল করা হয় এবং অ্যাপ্লিকেশনগুলোতে ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। এটি একটি রিলেশনাল ডেটাবেস (RDBMS), যেখানে ডেটাকে টেবিলের মাধ্যমে সংরক্ষণ করা হয় এবং SQL কোয়েরি ব্যবহার করে তা পরিচালনা করা হয়।
SQLite ইনস্টলেশন
React Native অ্যাপ্লিকেশনে SQLite ব্যবহার করতে হলে আপনাকে প্রথমে react-native-sqlite-storage প্যাকেজটি ইনস্টল করতে হবে।
npm install react-native-sqlite-storageReact Native 0.60+ এর জন্য আপনাকে autolinking কাজ করবে। যদি আপনার React Native ভার্সন 0.59 বা তার কম হয়, তবে আপনাকে লিংক করতে হতে পারে।
SQLite ব্যবহার করে Local Database তৈরি
import SQLite from 'react-native-sqlite-storage';
// SQLite ডাটাবেস ওপেন করা
const db = SQLite.openDatabase(
{ name: 'user.db', location: 'default' },
() => console.log('SQLite database opened'),
(error) => console.log('Error opening database', error)
);
// টেবিল তৈরি করা
const createTable = () => {
db.transaction((tx) => {
tx.executeSql(
'CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)',
[],
() => console.log('Table created successfully'),
(error) => console.log('Error creating table', error)
);
});
};
// ডেটা ইনসার্ট করা
const insertData = (name, age) => {
db.transaction((tx) => {
tx.executeSql(
'INSERT INTO users (name, age) VALUES (?, ?)',
[name, age],
() => console.log('Data inserted successfully'),
(error) => console.log('Error inserting data', error)
);
});
};
// ডেটা রিট্রিভ করা
const fetchData = () => {
db.transaction((tx) => {
tx.executeSql(
'SELECT * FROM users',
[],
(tx, results) => {
console.log('Rows:', results.rows);
},
(error) => console.log('Error fetching data', error)
);
});
};
// ডেটা আপডেট করা
const updateData = (id, name, age) => {
db.transaction((tx) => {
tx.executeSql(
'UPDATE users SET name=?, age=? WHERE id=?',
[name, age, id],
() => console.log('Data updated successfully'),
(error) => console.log('Error updating data', error)
);
});
};
// ডেটা ডিলিট করা
const deleteData = (id) => {
db.transaction((tx) => {
tx.executeSql(
'DELETE FROM users WHERE id=?',
[id],
() => console.log('Data deleted successfully'),
(error) => console.log('Error deleting data', error)
);
});
};এখানে SQLite.openDatabase দিয়ে ডাটাবেস ওপেন করা হয়েছে এবং বিভিন্ন SQL কোয়েরি যেমন CREATE, INSERT, SELECT, UPDATE, এবং DELETE ব্যবহার করা হয়েছে।
SQLite এর সুবিধা
- রিলেশনাল ডেটাবেস: টেবিল, কোয়েরি, জয়েন ইত্যাদি সুবিধা পাওয়া যায়।
- কমপ্যাক্ট এবং ফাস্ট: SQLite খুবই লাইটওয়েট এবং দ্রুত কাজ করে।
- অফলাইন সাপোর্ট: ডিভাইসে ডেটা সংরক্ষণ করে অফলাইনে অ্যাপ কাজ করতে পারে।
- ইন-এপ্লিকেশন ডেটাবেস: কোনো সার্ভারের প্রয়োজন নেই।
Realm - Local Database Management
Realm একটি আধুনিক, দ্রুত এবং স্কেলেবল NoSQL ডেটাবেস, যা React Native অ্যাপ্লিকেশনের জন্য খুবই জনপ্রিয়। এটি ডেটাকে অবজেক্ট হিসেবে সংরক্ষণ করে, এবং সহজেই বড় ডেটা সেট ম্যানেজ করতে পারে।
Realm ইনস্টলেশন
React Native অ্যাপে Realm ব্যবহার করতে হলে আপনাকে realm প্যাকেজটি ইনস্টল করতে হবে:
npm install realmReact Native 0.60+ এ autolinking সমর্থিত, তবে পুরানো ভার্সনের জন্য আপনাকে লিংক করতে হতে পারে।
Realm ব্যবহার করে Local Database তৈরি
import Realm from 'realm';
// Realm Schema তৈরি করা
const UserSchema = {
name: 'User',
properties: {
id: 'int',
name: 'string',
age: 'int',
},
};
// ডাটাবেস ওপেন করা
const realm = await Realm.open({
path: 'user.realm',
schema: [UserSchema],
});
// ডেটা ইনসার্ট করা
realm.write(() => {
realm.create('User', {
id: 1,
name: 'John Doe',
age: 30,
});
});
// ডেটা রিট্রিভ করা
const users = realm.objects('User');
console.log(users);
// ডেটা আপডেট করা
realm.write(() => {
const user = realm.objects('User').filtered('id = 1')[0];
user.age = 31;
});
// ডেটা ডিলিট করা
realm.write(() => {
const user = realm.objects('User').filtered('id = 1')[0];
realm.delete(user);
});এখানে Realm.open দিয়ে ডাটাবেস ওপেন করা হয়েছে এবং বিভিন্ন অবজেক্ট অপারেশন যেমন create, read, update, এবং delete করা হয়েছে।
Realm এর সুবিধা
- NoSQL ডেটাবেস: Realm ডেটাকে অবজেক্ট হিসেবে সংরক্ষণ করে, যা রিলেশনাল ডেটাবেসের তুলনায় আরও ফ্লেক্সিবল।
- বৃহত ডেটা ম্যানেজমেন্ট: বৃহত্তর ডেটা সেটের জন্য এটি অত্যন্ত কার্যকরী এবং দ্রুত।
- অফলাইন সাপোর্ট: Realm ডেটা লোকালি সংরক্ষণ করে এবং অফলাইনে অ্যাপ চলতে সাহায্য করে।
- এবসট্রাকশন: Realm ডেটাবেস ব্যবস্থাপনা সহজ করে তোলে, কারণ এটি ডেটাবেস অপারেশন সরাসরি JavaScript অবজেক্টের মাধ্যমে পরিচালনা করতে দেয়।
- ক্রস-প্ল্যাটফর্ম সাপোর্ট: Realm Android, iOS এবং React Native প্ল্যাটফর্মে কাজ করে।
সারাংশ
- SQLite একটি রিলেশনাল ডেটাবেস যা SQL কোয়েরি ব্যবহার করে ডেটা সংরক্ষণ করে, এটি অফলাইন অ্যাপ্লিকেশনের জন্য উপযুক্ত।
- Realm একটি NoSQL ডেটাবেস যা অবজেক্ট ভিত্তিক ডেটা ম্যানেজমেন্ট সরবরাহ করে, এটি বড় ডেটাসেট এবং দ্রুত পারফরম্যান্সের জন্য উপযুক্ত।
আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুসারে আপনি SQLite বা Realm এর মধ্যে যে কোন একটি ব্যবহার করতে পারেন। SQLite যখন রিলেশনাল ডেটাবেস প্রয়োজন এবং SQL ব্যবহারের সুবিধা পছন্দ করেন, তখন এটি উপযুক্ত; তবে Realm অবজেক্ট-ভিত্তিক ডেটা সংরক্ষণ এবং ম্যানেজমেন্টে সহজ এবং দ্রুত কাজ করে।
Read more